RK3566 移植 MIPI‑CSI 摄像头流程纯干货整理

📖 精选 ✍️ Jason | 📅 2026-08-10 | 👍 1 | 原帖↗
#知识星球 #立芯嵌入式 #来源/立芯星球 #技术/MIPI-CSI #技术/摄像头 #技术/RK平台 #质量/精华

原帖 | Jason | 2026-08-10 15:31 | 👍1 | 阅读约1

RK3566 移植 MIPI‑CSI 摄像头流程纯干货整理。

流程分四个阶段:移植前准备 → 设备识别 & DTS/media graph 校验 → 链路打通出帧 → 图像质量 & 稳定性验收。

1、移植前期准备

拿到新 sensor 先把基础信息确认到位:

1. 确认 Sensor 规格:lane 数、最大分辨率、MIPI 速率、ISP 是否支持
2. 收集资料:datasheet、寄存器表、上电时序、MCLK、I2C 地址
3. 明确关键参数:分辨率、fps、bit 位深、bus‑fmt、link_freq、pixel_rate、HTS/VTS

supported‑models 、 reg_link_freq 、 menu_items  这些内核配置项要核对,速率不匹配会 probe 失败。

I2C 能不能识别到 sensor,执行 i2cdetect 看。识别不到,优先排查:AVDD/DOVDD/DOVDD 电源、MCLK、RESET、PWDN 硬件;再看 dts 里compatible、i2c 地址。

2、DTS、驱动、media graph 检查:
compatible、 camera‑module‑index、 module‑facing、 data‑lanes、 clock‑lanes、 remote‑endpoint、bus‑fmt、bpp、mipi‑req‑idx、hdr_mode、exp‑def、hts、vts,link_freq 配置错误,大概率出现收帧失败、帧率异常。

然后检查 media graph 完整性: media‑ctl -d /dev/mediaX -p 

  • 报错拓扑不完整:重点检查 async_notifier 、 subdev 注册、endpoint 连接关系,确认每个 entity、pad、link 配置完整。media graph 是整个RK 摄像头子系统的骨架。

3、链路打通:STREAMON、DBUF出帧,排查各类报错

media graph 正常后,走到VIDIOC_STREAMON

  • STREAMON失败:检查 ‑qbuf 格式、size、bytesperline;确认 sensor 子流调用成功,MIPI/CSI/ISP 寄存器配置是否匹配;用 v4l2‑ctl‑all‑dmesg 看详细日志。

STREAMON 成功,还不一定能看到图像,下一步看 DBUF 能否连续出帧。

采集卡住、无帧:排查 vb2 队列、REQBUFS、OBUF/DOBUF 流程;DMA 地址、stride、buffer 数量;中断、 vb2_buffer_done 执行是否正常,看 /proc/interrupts

到这里如果能出图,但打印大量 ECC / CRC / size error / overflow,这是 MIPI 物理层告警,MIPI 硬件问题居多:采样频率、HS‑SETTLE 配置、MIPI 速率太高;优先降HS‑SETTLE 测试;再查 FPC 排线、连接器、焊点、电源纹波;再调 D‑PHY  hs_freq_ranges 时序参数。这部分软参调不动的时候,一定要回头怀疑硬件。

4、图像质量调优

能稳定出帧之后,再处理图像异常:

1. 偏色、Bayer 顺序乱:核对dts bus fmt、bayer 顺序、ISP 参数。
2. 黑屏、花屏、全绿:排查 pixelformat、stride、bytesperline、内存格式。
3. 镜像翻转:mirror/flip 控制。

调试可以打开 Test Pattern,快速区分是光路传感器问题,还是 MIPI 链路、数据链路问题。

5、性能与稳定性验证

  • 连续 50 次热启、冷启动回归测试
  • 观察 fps 是否稳定,切换多分辨率、多帧率、HDR 模式
  • 多摄像头同时使用,media 节点切换是否偶发异常

日常调试常备命令

i2cdetect | grep sensor
media‑ctl -d /dev/mediaX -p
v4l2‑ctl ‑all‑dmesg
cat /proc/interrupts
dmesg | grep‑i err

调试顺序:先确认硬件电源时序→I2C 通→media链路拓扑完整→MIPI无底层报错→再调图像效果。ECC报错优先怀疑硬件、排线、PHY时序。


相关笔记